const config = require('./configLoader')
const now = require('./now')

module.exports = function (path, data, request, response) {
  if (!(path in config)) {
    return [400, `路径{${path}}不能在配置文件中找到！`]
  }

  const projectConfig = config[path]
  if (projectConfig.error) {
    return [500, `配置项出错：\n    ${projectConfig.error}`]
  }

  try {
    data = projectConfig.normalizeData(data)
  } catch (err) {
    console.log(err) // TODO 记录执行出错的日志
    return [500, '插件规范化请求数据时出错，请检查对应插件的代码']
  }

  if (('token' in projectConfig) && projectConfig.token !== data.token) {
    return [400, 'token不匹配！']
  }

  // 目前只支持PUSH事件
  if (data.event !== 'push') {
    return [200, '请求忽略，需明确event为push。']
  }

  if (!('branch' in data)) {
    return [200, '请求忽略，没有指定branch信息。']
  }

  if (projectConfig.branchMatch(data.branch)) {
    projectConfig.exec()
    return [200, '成功处理请求，正在执行Hook命令，可查看日志文件确定命令执行的结果。']
  } else {
    return [200, `请求忽略，跳过该分支${data.branch}。`]
  }
}
